package com.sskj.api.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sskj.api.domain.Product;
import com.sskj.api.domain.ProductThingsModel;
import com.sskj.api.domain.ThingModelTemplate;
import com.sskj.api.vo.req.ProductPageListReq;

import java.util.List;

public interface IProductService extends IService<Product> {

    /**
     * 新增
     * @param product 实例
     */
    void add(Product product);

    /**
     * 更新
     * @param product 实例
     */
    void update(Product product);

    /**
     * 分页查询
     * @param req 实例
     * @return 集合
     */
    IPage<Product> pageList(ProductPageListReq req);

    /**
     * 详情
     * @param id 主键ID
     * @return 详情信息
     */
    Product detail(Long id);

    /**
     * 绑定物模型
     * @param productThingsModel 映射实例
     */
    void bindThingModel(ProductThingsModel productThingsModel);

    /**
     * 解绑物模型
     * @param bindId 绑定ID
     */
    void unbindThingModel(long bindId);

    /**
     * 绑定物模型列表
     * @param id 产品主键ID
     * @param pageNo 页码
     * @param pageSize 条数
     * @return 分页集合
     */
    IPage<ThingModelTemplate> thingModelPageList(long id, long pageNo, long pageSize);

    /**
     * 获取产品物模型定义
     * @param id 产品ID
     * @return 物模型定义集合
     */
    List<ThingModelTemplate> getThingModels(Long id);
}
